package com.winbomb.simulife.base;

/**
 * 卡片管理器，用于记录出过的卡片
 * 
 * @author winbomb
 * 
 */
public interface ICardManager {

	/**
	 * 将记录的月份加1，下次记录将记录到下一个月
	 */
	public void step();

	/**
	 * 在当前月份上记录一张卡片
	 * 
	 * @param card
	 */
	public void record(ICard card);

	/**
	 * 测试在第monthId个月是否翻开过cardId这种牌
	 * 
	 * @param monthId
	 * @param cardId
	 * @return
	 */
	public boolean contains(int monthId, int cardId);

	/**
	 * 返回在第monthId个月翻开过几次cardId这种牌
	 * 
	 * @param monthId
	 * @param cardId
	 * @return
	 */
	public int getCardCount(int monthId, int cardId);

	public int getCardCount(int monthId, CardType type);

	/**
	 * 测试从第begMonth开始到endMonth结束一共翻开过cardId这种牌多少次。
	 * 
	 * @param begMonth
	 * @param endMonth
	 * @param cardId
	 * @return
	 */
	public int getCardCount(int begMonth, int endMonth, int cardId);

	public int getCardCount(int begMonth, int endMonth, CardType type);

	/**
	 * 发牌
	 * 
	 * @return
	 */
	public ICard[] dealNewCards();

}
